/*
 * Camera.h
 *
 *  Created on: Jan 24, 2010
 *      Author: teddy
 */
#include "Vector3.h"
#include <math.h>

#ifndef CAMERA_H_
#define CAMERA_H_

class Camera {

private:
	Vector3 origViewDir;
	Vector3 origRightVector;
	Vector3 origUpVector;
	Vector3 origPosition;

	Vector3 viewDir;
	Vector3 rightVector;
	Vector3 upVector;
	Vector3 position;

	float rotatedX;
	float rotatedY;
	float rotatedZ;

	static const float PiDiv180 = M_PI / 180.0f;

public:
	Camera();
	virtual ~Camera();
	void reset(void);
	void move(Vector3 direction);
	void rotateX(float angle);
	void rotateY(float angle);
	void rotateZ(float angle);
	void moveForward(float distance);
	void strafeRight(float distance);
	void moveUpward(float distance);
	Vector3 getCameraPosition();
	Vector3 getCameraTarget();
	Vector3 getUpVector();
};

#endif /* CAMERA_H_ */
